package com.ruoyi.common.utils;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import java.util.HashMap;
import java.util.Map;

public class XmlUtils {
    /**
     * 将Map转换为XML字符串（微信支付要求的格式）
     * @param map 待转换的Map
     * @return XML字符串
     */
    public static String mapToXml(Map<String, String> map) {
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("xml"); // 根节点为<xml>
        for (Map.Entry<String, String> entry : map.entrySet()) {
            Element element = root.addElement(entry.getKey());
            element.setText(entry.getValue()); // 节点值为参数值
        }
        return document.asXML(); // 转换为XML字符串
    }

    /**
     * 将XML字符串转换为Map（微信支付返回结果解析）
     * @param xml XML字符串
     * @return Map（键为节点名，值为节点值）
     * @throws DocumentException XML解析异常
     */
    public static Map<String, String> xmlToMap(String xml) throws DocumentException {
        Map<String, String> map = new HashMap<>();
        Document document = DocumentHelper.parseText(xml); // 解析XML
        Element root = document.getRootElement(); // 获取根节点<xml>
        for (Object obj : root.elements()) { // 遍历子节点
            Element element = (Element) obj;
            map.put(element.getName(), element.getText()); // 添加到Map
        }
        return map;
    }
}
